If Exists(Select xType, 1 From SysObjects Where Upper(Rtrim(Ltrim(Name))) = 'FX_LF_ITEM_CUPOM')
	Drop Function FX_LF_ITEM_CUPOM
Go
 
CREATE FUNCTION FX_LF_ITEM_CUPOM ( @CODIGOMATRIZFISCAL CHAR(6)  = NULL,  
          @DATAINICIAL  DATETIME = NULL,  
          @DATAFINAL   DATETIME = NULL ) RETURNS TABLE AS   
RETURN (SELECT  
   B.TICKET,  
   B.DATA_VENDA,  
   CODIGO_MATRIZ_FISCAL = C.COD_CLIFOR,  
   MATRIZ_FISCAL   = C.NOME_CLIFOR,  
   CODIGO_FILIAL   = FILIAL.COD_CLIFOR,  
   FILIAL     = FILIAL.NOME_CLIFOR,  
   COD_CLIFOR    = I.CODIGO_CLIENTE,  
   NOME_CLIFOR    = I.CLIENTE_VAREJO,  
   B.TERMINAL,  
   A.DATA,A.ID_EQUIPAMENTO,   
   A.NUMERO_CUPOM_FISCAL,   
   D.ITEM,   
   D.PRODUTO,   
   VALOR_UNITARIO   = D.PRECO_LIQUIDO + D.DESCONTO_ITEM,  
   D.DESCONTO_ITEM,  
   RATEIO_DESCONTO_VENDA,  
   B.CPF_CGC_ECF,  
   I.CPF_CGC,  
   QTDE     = CASE WHEN D.ITEM_EXCLUIDO = 0 AND A.CANCELADO_FISCAL = 0 THEN D.QTDE + D.QTDE_CANCELADA ELSE D.QTDE END,  
   VALOR_LIQUIDO_TOTAL  = ISNULL((CASE WHEN D.ITEM_EXCLUIDO = 0 AND A.CANCELADO_FISCAL = 0 THEN D.QTDE + D.QTDE_CANCELADA ELSE D.QTDE END * D.PRECO_LIQUIDO) - D.RATEIO_DESCONTO_VENDA, 0) ,  
   BASE_ICMS    = ISNULL((CASE WHEN D.ITEM_EXCLUIDO = 0 AND A.CANCELADO_FISCAL = 0 THEN D.QTDE + D.QTDE_CANCELADA ELSE D.QTDE END * D.PRECO_LIQUIDO) - D.RATEIO_DESCONTO_VENDA, 0) ,  
   ALIQUOTA    = CASE WHEN ISNULL(D.ALIQUOTA, 0) < 0 THEN 0.00 ELSE ISNULL(D.ALIQUOTA,0) END  ,  
   VALOR_ICMS				= (ISNULL((CASE WHEN D.ITEM_EXCLUIDO = 0 AND A.CANCELADO_FISCAL = 0 THEN D.QTDE + D.QTDE_CANCELADA ELSE D.QTDE END * D.PRECO_LIQUIDO) - D.RATEIO_DESCONTO_VENDA, 0) * CASE WHEN ISNULL(D.ALIQUOTA, 0) < 0 THEN 0.00 ELSE ISNULL(D.ALIQUOTA,0) END) /100,
   B.DATA_HORA_CANCELAMENTO,  
   G.CLASSIF_FISCAL,   
   G.DESC_PRODUTO,  
   G.UNIDADE,  
   G.TRIBUT_ORIGEM,  
   G.TRIBUT_ICMS,  
   CODIGO_FISCAL_OPERACAO  = ISNULL(H.CODIGO_FISCAL_OPERACAO, '5102'),  
   CONTADOR_REINICIO_OPERACAO = ISNULL(H.CONTADOR_REINICIO_OPERACAO, 0),  
   QTDE_REDUCOES_Z   = ISNULL(H.QTDE_REDUCOES_Z, 0),   
   VALOR_DESCONTO   = CASE WHEN (DESCONTO_ITEM * QTDE) + RATEIO_DESCONTO_VENDA > 0 THEN (DESCONTO_ITEM * QTDE) + RATEIO_DESCONTO_VENDA ELSE 0 END,  
   VALOR_ACRESCIMO   = CASE WHEN (DESCONTO_ITEM * QTDE) + RATEIO_DESCONTO_VENDA < 0 THEN ((DESCONTO_ITEM * QTDE) + RATEIO_DESCONTO_VENDA)*-1 ELSE 0 END,  
   QTDE_CANCELADA   = CASE WHEN (D.ITEM_EXCLUIDO = 1 OR A.CANCELADO_FISCAL = 1) THEN D.QTDE_CANCELADA ELSE 0 END,  
   VALOR_CANCELADO   = CASE WHEN (D.ITEM_EXCLUIDO = 1 OR A.CANCELADO_FISCAL = 1) THEN ((D.PRECO_LIQUIDO + D.DESCONTO_ITEM) * D.QTDE_CANCELADA) ELSE 0 END,  
   VALOR_VENDA_BRUTA  = (CASE WHEN D.ITEM_EXCLUIDO = 0 AND A.CANCELADO_FISCAL = 0 THEN D.QTDE + D.QTDE_CANCELADA ELSE D.QTDE END) * (D.PRECO_LIQUIDO + D.DESCONTO_ITEM),  
   ITEM_EXCLUIDO   = D.ITEM_EXCLUIDO,  
   CANCELADO_FISCAL  = A.CANCELADO_FISCAL,
   NUMERO_MODELO_FISCAL = ES.NUMERO_MODELO_FISCAL      
  FROM LOJA_VENDA_PGTO A  
   JOIN LOJA_VENDA B  
    ON A.CODIGO_FILIAL=B.CODIGO_FILIAL_PGTO AND   
     A.TERMINAL=B.TERMINAL_PGTO    AND   
     A.LANCAMENTO_CAIXA=B.LANCAMENTO_CAIXA  
   JOIN LOJA_VENDA_PRODUTO D  
    ON B.CODIGO_FILIAL=D.CODIGO_FILIAL   AND   
     B.TICKET=D.TICKET      AND   
     B.DATA_VENDA=D.DATA_VENDA  
   JOIN LOJAS_VAREJO E  
    ON A.CODIGO_FILIAL=E.CODIGO_FILIAL  
   JOIN FILIAIS F (NOLOCK)  
    ON E.FILIAL=F.FILIAL  
   JOIN CADASTRO_CLI_FOR AS FILIAL  
    ON F.FILIAL = FILIAL.NOME_CLIFOR  
   JOIN CADASTRO_CLI_FOR AS C  
    ON F.MATRIZ_FISCAL = C.NOME_CLIFOR  
   JOIN PRODUTOS G (NOLOCK)  
    ON D.PRODUTO = G.PRODUTO  
   LEFT JOIN LOJA_CONTROLE_FISCAL H (NOLOCK)  
      ON H.CODIGO_FILIAL  = B.CODIGO_FILIAL  
      AND H.TERMINAL   = B.TERMINAL  
      AND H.DATA_FISCAL  = B.DATA_VENDA  
      AND H.ID_EQUIPAMENTO = A.ID_EQUIPAMENTO  
   LEFT JOIN CLIENTES_VAREJO I ON   
    B.CODIGO_CLIENTE  = I.CODIGO_CLIENTE
   LEFT JOIN SERIES_NF AS S ON 
	H.SERIE_NF = S.SERIE_NF
   LEFT JOIN CTB_ESPECIE_SERIE ES (NOLOCK) ON
	(S.ESPECIE_SERIE = ES.ESPECIE_SERIE)      
  WHERE (C.COD_CLIFOR = @CODIGOMATRIZFISCAL OR @CODIGOMATRIZFISCAL IS NULL) AND  
    (B.DATA_VENDA >= @DATAINICIAL OR @DATAINICIAL IS NULL)    AND   
    (B.DATA_VENDA <= @DATAFINAL OR @DATAFINAL IS NULL) )